package InterfaceGraphique;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * classe codant la fenetre permettant de supprimer un admin
 * @author bruno
 *
 */
public class FenetreSupprAdmin extends Fenetre {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * Bouton qu'il faudra cliquer pour supprimer l'admin
	 * @see JButton
	 */
	 private JButton button1 = new JButton("Supprimer l'admin");
	
	/**
	 * Bouton qu'il faudra cliquer pour annuler et revenir au Menu
	 * @see JButton
	 */
	 private JButton button2 = new JButton("Annuler");
	
	/**
	 * liste déroulante contenant toutes les pages
	 * @see JComboBox
	 */
	private JComboBox<String> name = new JComboBox<String>(Test.g.getTabPage());
	
	/**
	 * liste déroulante contenant tous les administrateurs de la page selectionnée gérée dynamiquement
	 * @see JComboBox
	 */
	private JComboBox<String> name2 = new JComboBox<String>(Test.g.getListPage().get(0).getTabAdmin());
	
	/**
	 * constructeur de la fenetre
	 */
	public FenetreSupprAdmin(){
		Test.disable();
		
		name.addActionListener(new MyListener());
		
		this.setTitle("Supprimer un admin");
		this.setSize(425, 200);
		this.setResizable(true);
		this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
		this.setVisible(true);
		this.setLocationRelativeTo(null);
		
		button1.addActionListener(this);
		button2.addActionListener(this);
		
		JPanel main_container = new JPanel();
		main_container.setLayout(new GridBagLayout());
		
		GridBagConstraints gbc = new GridBagConstraints();
		
		//on précise le placement du premier composant sur le container
		gbc.gridx = 0;
		gbc.gridy = 0;
		//on précise la taille des composants par rapport à la grille 
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.ipady = 10;
		gbc.anchor = GridBagConstraints.WEST;
		
		JLabel label_for_name = new JLabel("Saisir le nom de la page :");
		name.setPreferredSize(new Dimension(100, 25));
		main_container.add(label_for_name, gbc);
		gbc.gridx = 1;
		main_container.add(name, gbc);

		gbc.gridx = 0;
		gbc.gridy = 1;
		
		JLabel label_for_name2 = new JLabel("Saisir l'admin :");
		name2.setPreferredSize(new Dimension(100, 25));
		main_container.add(label_for_name2, gbc);
		gbc.gridx = 1;
		main_container.add(name2, gbc);
		
		gbc.gridx = 0;
		gbc.gridy = 2;
		
		main_container.add(button1, gbc);
		gbc.gridx = 1;
		main_container.add(button2, gbc);
		
		this.setContentPane(main_container);
	}
	
	/**
	 * Méthode qui définit ce que le programme fera en fonction des boutons cliqués
	 * @param e l'action dont on peut récupérer la source vie e.getSource()
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == button1){
			boolean isGoodToSend = true;
			
			String field_one = (String) name.getSelectedItem();
			String field_two = (String) name2.getSelectedItem();
			
			
			// on vérifie que les noms soient pas vide ou null
			if(field_one == null || field_two==null){
				isGoodToSend = false;
			}
			else if(field_one.equals("") || field_two.equals("")) isGoodToSend = false;
			
			if(isGoodToSend){
				Test.g.supprimerAdministrateur(field_one, field_two);
				Test.f.load.setText("Admin supprim� !!!");
			}
			else Test.f.load.setText("Erreur lors de la suppression de l'admin !!!");
				
			Test.reEnable();
			this.dispose();
		}
		if(e.getSource() == button2){
			Test.reEnable();
			this.dispose();
		}
	}
	
	/**
	 * classe interne permettant de générer dynamiquement la liste d'admin a chaque fois 
	 * qu'on selectionne
	 * une autre page
	 * @author bruno
	 *
	 */
	class MyListener implements ActionListener{
		
		@Override
		public void actionPerformed(ActionEvent e){
			String[] tab = Test.g.trouverPage((String) name.getSelectedItem()).getTabAdmin();
			name2.removeAllItems();
			for(String s : tab){
				name2.addItem(s);
			}
		}	
		
	}

}
